package com.learn;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebListener;
import javax.servlet.annotation.WebServlet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.ResourceProperties;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * springboot如何访问静态资源：
 * 	1：webapp下的静态资源可以直接访问
 * 	2:详见{@org.springframework.boot.autoconfigure.web.ResourceProperties.CLASSPATH_RESOURCE_LOCATIONS}
 * 		放在这四个目录下都行"classpath:/META-INF/resources/", "classpath:/resources/","classpath:/static/", "classpath:/public/"
 * 	3：配置spring.resources.staticLocations来指定路径
 * 
 * springboot 中使用servlet：
 * 一：	1.便携servlet类继承javax.servlet.http.HttpServlet，重写doGet方法
 * 		2.类上加注解 如@WebServlet("/user.do")
 *		3.springboot 启动类上加注解@ServletComponentScan扫面自定义的servlet
 * 二：详见com.learn.MyConfig
 * 
 * springboot 中使用Filter：
 * 	一：	1.编写自定义类filter实现javax.servlet.Filter;
 * 		2.加注解如@WebFilter("/*")
 *  二：详见com.learn.MyConfig
 * 
 * springboot 中使用Listener：
 * 一：	1.编写自定义类实现javax.servlet.ServletContextListener
 * 		2.加注解@WebListener
 *  二：详见com.learn.MyConfig
 *  
 *  springboot 中使用拦截器的方法:
 *  1.编写一个拦截器实现org.springframework.web.servlet.HandlerInterceptor
 *  2.编写一个配置类实现org.springframework.web.servlet.config.annotation.WebMvcConfigurer，实现其addInterceptors方法注册拦截器
 *  	拦截器的方法说明：
 *  	preHandle：controller执行前调用
 *  	postHandle：controller执行之后，页面渲染之前调用
 *  	afterCompletion：页面渲染之后调用，一般用于资源清理
 *  
 *  错误界面处理：
 *  1.可以使用@SpringBootApplication(exclude=ErrorMvcAutoConfiguration.class)方法去除默的异常处理方式
 *  2.注册错误界面的方法：
 *  			1.编写一个工具类实现org.springframework.boot.web.server.ErrorPageRegistrar接口
 *  			2.使用其addErrorPages方法注册界面
 *  
 *  全局异常处理：
 *  1.编写一个类，使用注解@ControllerAdvice
 *  2.编写一个方法，使用@ExceptionHandler(value=Exception.class)注解,其中Exception.class可以是别的
 * @author Romanceling
 *
 */
@ServletComponentScan
//@SpringBootApplication(exclude=ErrorMvcAutoConfiguration.class)
@SpringBootApplication
public class App {
    public static void main( String[] args ){
    	SpringApplication.run(App.class, args);
    }
}
